package com.xcw.test.caozuo;

/**
 * @author bhx
 * @Class P10_
 * @date 2022/11/13 3:27
 * @Description TODO
 */

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

/**
 * 10、给定一个长度为n的字符串s，其中可能包含四个大写字母，
 * 分别为'U','D',L',R'，
 * 分别表示小翔在迷宫中的移动方向:
 * 向上走一格、向下走一格、向左走一格、向右走一格。
 * 请问，有多少个S的非空子串可以使得小翔回到原点。
 * 比如S="URLLDR"，
 * 则其中的子串“RL”和"URLLDR"这两个子串均能回到原点。
 * 只要两个子串的起点或者终点位置不同，就认为是两个不同的子串。
 * (1）本题分值:20分。
 * (2）考核时间: 36min。
 * (3)考核形式:上机实操。
 * (4）编程语言:CIC++、Python、Java任选一种语言。
 * (5）输入:第一行为字符串的长度n, 1<=n<=200;第二行为给定的字符串
 * (6）输出:输出使得小翔能够回到起点的非空子串的方案数
 * (7）样例输入:7
 */
public class P10_ {
    public  static int[] arr = {0,0};
    // 记录坐标 上为+ 下为-  左为- 右为+
    public static void move(int[] arr, String actor){
        switch (actor){
            case "U":
                arr[0] += 1;
                break;
            case "D":
                arr[0] -= 1;
                break;
            case "L":
                arr[1] -= 1;
                break;
            case "R":
                arr[1] += 1;
                break;
        }
    }
    public static int getChildStr(int[] arr, String str){
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < str.length(); i++) {
            for (int j = 0, k = i + 1; k <= str.length(); j++, k++) {
                // 去掉重复的子串
//                if (list.contains(str.substring(j, k))) {
//                    continue;
//                } else {
                    // 把无重复的子串加入到list中去
                    list.add(str.substring(j, k));
//                }
            }
        }
        int count = 0;
        for (int i = 0; i < list.size(); i++) {
            int[]  newArr = new int[2];
            newArr[0] = arr[0];
            newArr[1] = arr[1];
            String s = list.get(i);
            char[] chars = s.toCharArray();
//            System.out.println(Arrays.toString(newArr));
//            System.out.println(s);
            for (int j = 0; j < chars.length; j++) {
                move(newArr, Character.toString(chars[j]));
            }
            if (newArr[0] == 0 && newArr[1] == 0){
                System.out.println(s);
                count++;
            }
        }
    return count;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数量：");
        int num  = scanner.nextInt();
//        num = new int [n];
        System.out.println(num);
        scanner = new Scanner(System.in);
        System.out.println("请输入字符串：");
        String line = scanner.nextLine();
//        char[] chars = line.toCharArray();
//        for (int j = 0; j < chars.length; j++) {
//            move(arr, Character.toString(chars[j]));
//        }
        System.out.println(Arrays.toString(arr));
        System.out.println(getChildStr(arr, line));
    }
}
